package com.trsj.lnsj.util;

import java.io.IOException;

import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;

public class QiNiuUtil {
    // 设置好账号的ACCESS_KEY和SECRET_KEY
    String ACCESS_KEY = "7otc0ZMHBLH9tsR0cS3KPoHxMn6bvXVhh_0kJ_Ol"; // 这两个登录七牛账号里面可以找到
    String SECRET_KEY = "7vNXWvMxr7g1PlZ7_6Uw_m29cuGMbNbi-940KIbo";

    // 要上传的空间
    String bucketname = "joyrepo"; // 对应要上传到七牛上你的那个路径（自己建文件夹 注意设置私有）
    // 上传到七牛后保存的文件名

    // 密钥配置
    Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
    // 创建上传对象
    UploadManager uploadManager = null;//new UploadManager();

    /**
     * 简单上传，使用默认策略，只需要设置上传的空间名就可以了
     *
     * @param fileName
     *            文件上传至七牛云空间的名称
     * @return
     */
    public String getUpToken(String fileName) {
        // return auth.uploadToken(bucketname);
        // <bucket>:<key>，表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”，已存在同名资源则会被本次覆盖。
        // 如果希望只能上传指定key的文件，并且不允许修改，那么可以将下面的 insertOnly 属性值设为 1。
        // 第三个参数是token的过期时间
        return auth.uploadToken(bucketname, fileName, 3600, new StringMap().put("insertOnly", 0));
    }

    /**
     * 普通上传
     *
     * @param filePath
     *            文件路径
     * @param fileName
     *            文件上传至七牛云空间的名称
     * @throws IOException
     */
    public void upload(String filePath, String fileName) {
        try {
            // 调用put方法上传
            Response res = uploadManager.put(filePath, fileName, getUpToken(fileName));
            // 打印返回的信息
            System.out.println(res.bodyString());
        } catch (QiniuException e) {
            Response r = e.response;
            // 请求失败时打印的异常的信息
            System.out.println(r.toString());
            try {
                // 响应的文本信息
                System.out.println(r.bodyString());
            } catch (QiniuException e1) {
                // ignore
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        new QiNiuUtil().upload("C:\\Users\\winte\\Pictures\\2.jpg", "2.jpg");
    }
}